Git + Jenkins 自动化 NGINX 发布简易实现

您所在的位置:网站首页 docker jenkins部署 Git + Jenkins 自动化 NGINX 发布简易实现

Git + Jenkins 自动化 NGINX 发布简易实现

2024-07-11 00:35:56| 来源: 网络整理| 查看: 265

概述

之前基于 GitLab + Jenkins 实现了简单的 NGINX 的自动化发布。 具体包含如下的组件:

GitLab 包括 GItLab 的 WebHook; Jenkins 及其插件: Generic Webhook Trigger Publish Over SSH

🧠疑问:

为什么不用 Ansible? 答:这里说明下,之所以不用 Ansible,是因为这个环境默认没有安装 Ansible,而且 Publish Over SSH 也足够用了,就没再用 Ansible 了。

详细说明

这里有 3 个几个自动化 job,如下:

Generic Webhook Trigger 用于和GitLab联动, 自动触发 WebHook Publish Over SSH 用于通过SSH 发布NGINX配置

说明:

配置 WebHook 以 test-intranet-nginx 为例进行说明.

进入该项目 -> 设置 -> 集成. 如下图: gitlab webhook URL里填入: https://jenkins.example.com/generic-webhook-trigger/invoke?token=Jdy0bTQafyfUUBxJw33k(假设 jenkins.example.com 是 Jenkins 的控制台域名,token 可以在对应的 Jenkins 插件 Generic Webhook Trigger 中找到,这里 token 是用于区别具体是哪个 job。) Trigger 选择: Push events -> master. 按需取消勾选 Enable SSL verification. 保存. 如下: gitlab webhook 填入 jenkins url 和 token

说明:

URL地址可以在 Jenkins的对应插件里找到. Trigger可以按需调整.

在 Jenkins 的 系统配置里 -> Publish over SSH:

如下图:

jenkins 插件 publish over ssh

填入:

Key SSH Server的: name(用于给 jenkins 用户识别的用户名) Hostname(目标机器的 IP 地址) Username(目标机器的 OS 用户) Remote Directory(需要把文件发送到的目标机器的目录地址)

说明:

一般情况下,对于 NGINX, 目录是2个, 为: /etc/nginx(放配置 *.conf) 和 /usr/share/nginx/html(放静态 web 文件)

以下图 Job 为例:

首先配置 源码管理, 如下图:

job 源码管理配置

填入:

仓库 URL 认证信息(如果是公开的库, 就不需要认证信息) 分支: master(按需调整) 源码库的信息: 本例中,类型是: gitlab URL GitLab 的 Version

然后配置 构建触发器, 如下图:

jenkins-webhook-trigger1.png

说明:

详细使用请在浏览器输入图中的 URL 进一步查看.

Variable (使用默认配置) Expression (使用默认配置) Token jenkins-webhook-trigger2.png Expression(解释如下: 用于进行目录过滤,填入正则后,只有目录匹配正则且发生变化才会触发构建) Text (默认配置)

最后, 是 构建后操作(实际「构建」过程没做任何事情). 如下图:

配置 publish over ssh

注意:

如果有多台 nginx 要同时发, 就要在这里同时写上多台 SSH Server.

Name: 下拉框选择对应Name Transfers Source files: 源文件, 位于: iaas_web_xxxx/conf/**/* Remove prefix: 需要移除的前缀, 为: iaas_web_xxxx/. 移除后, 示例为: conf/nginx.conf Remote directory: 不填写就是之前填写的目录, 一般为 /etc/nginx. 那么示例就发布到: /etc/nginx + conf/nginx.conf, 即: /etc/nginx/conf/nginx.conf Exec command: 文件传输过去后需要执行的命令. 为: nginx -t && nginx -s reload(或:sudo systemctl reload nginx). 即, 先 -t 验证配置是否有语法错误, 然后再 reload 发布. 如果验证有问题, jenkins pipeline 会异常, 变黄或变红. 发布流程 用户通过 IDE + Git, 在自己本地修改 NGINX Conf, 并最终 push 或 merge(也会触发push的动作) 到 master上 GitLab 接收到 push event, 触发 webhook 调用: https://example.com/generic-webhook-trigger/invoke?token=Jdy0bTQafyfUUBxJw33k Jenkins 收到 webhook trigger. 并结合 filter 的 Expression 进行判断,确认匹配,则开始自动启动一次 Job. 该 Job 过程为: 将存有 nginx 配置的仓库 pull 到 jenkins. 通过 Publish over SSH, 将相关目录和文件传输到 SSH Server 的指定目录 执行 nginx 命令, 进行发布. 结束.

提示:

如果因为其他异常, 导致未自动发布,那么也可以手动点击 Job 页面的: 立即构建 进行手动触发

可以通过首图的 rss 订阅: Atom feed 失败, 这样发布失败你就会及时收到邮件.

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭